Latviešu

Atklājiet laikrindu datu jaudu, izmantojot loga funkcijas. Šī rokasgrāmata aptver būtiskus jēdzienus, praktiskus piemērus un progresīvas metodes datu analīzei.

Laikrindu analīze: loga funkciju apgūšana datu ieskatiem

Laikrindu dati, ko raksturo to secīgā un no laika atkarīgā daba, ir visuresoši dažādās nozarēs. Sākot ar akciju cenu izsekošanu un vietņu datplūsmas uzraudzību līdz sensoru rādījumu analīzei un pārdošanas tendenču prognozēšanai, spēja iegūt jēgpilnus ieskatus no laikrindu datiem ir izšķiroša informētu lēmumu pieņemšanai. Loga funkcijas nodrošina jaudīgu un elastīgu rīku kopumu, lai veiktu aprēķinus pār rindu kopu, kas ir saistīta ar pašreizējo rindu tabulā vai datu ietvarā, padarot tās neaizstājamas laikrindu analīzē.

Izpratne par laikrindu datiem

Laikrindu dati ir datu punktu secība, kas indeksēta laika secībā. Datu punkti var attēlot dažādus rādītājus, piemēram:

Laikrindu datu analīze ietver modeļu, tendenču un sezonalitātes identificēšanu, ko var izmantot nākotnes vērtību prognozēšanai, anomāliju atklāšanai un biznesa procesu optimizēšanai.

Ievads loga funkcijās

Loga funkcijas, zināmas arī kā logotie agregāti vai analītiskās funkcijas, ļauj veikt aprēķinus pār rindu kopu, kas saistīta ar pašreizējo rindu, negrupējot rindas vienā rezultātu kopā, kā to dara tradicionālās agregātfunkcijas (piemēram, SUM, AVG, COUNT). Šī iespēja ir īpaši noderīga laikrindu analīzē, kur bieži nepieciešams aprēķināt slīdošos vidējos, kumulatīvās summas un citus uz laiku balstītus rādītājus.

Loga funkcija parasti sastāv no šādām sastāvdaļām:

  1. Funkcija: Aprēķins, kas jāveic (piem., AVG, SUM, RANK, LAG).
  2. OVER klauzula: Definē rindu logu, kas tiek izmantots aprēķinam.
  3. PARTITION BY klauzula (neobligāta): Sadala datus partīcijās, un loga funkcija tiek piemērota katrai partīcijai neatkarīgi.
  4. ORDER BY klauzula (neobligāta): Norāda rindu secību katrā partīcijā.
  5. ROWS/RANGE klauzula (neobligāta): Definē loga ietvaru, kas ir rindu kopa attiecībā pret pašreizējo rindu, ko izmanto aprēķinam.

Galvenie jēdzieni un sintakse

1. OVER() klauzula

OVER() klauzula ir loga funkcijas sirds. Tā definē rindu logu, ar kuru funkcija darbosies. Vienkārša OVER() klauzula bez argumentiem uzskatīs visu rezultātu kopu par logu. Piemēram:

SQL piemērs:

SELECT
  date,
  sales,
  AVG(sales) OVER()
FROM
  sales_data;

Šis vaicājums aprēķina vidējos pārdošanas apjomus visiem datumiem sales_data tabulā.

2. PARTITION BY

PARTITION BY klauzula sadala datus partīcijās, un loga funkcija tiek piemērota katrai partīcijai atsevišķi. Tas ir noderīgi, ja vēlaties aprēķināt rādītājus dažādām grupām jūsu datos.

SQL piemērs:

SELECT
  date,
  product_id,
  sales,
  AVG(sales) OVER (PARTITION BY product_id)
FROM
  sales_data;

Šis vaicājums aprēķina vidējos pārdošanas apjomus katram produktam atsevišķi.

3. ORDER BY

ORDER BY klauzula norāda rindu secību katrā partīcijā. Tas ir būtiski, lai aprēķinātu pieaugošās kopsummas, slīdošos vidējos un citus uz laiku balstītus rādītājus.

SQL piemērs:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date)
FROM
  sales_data;

Šis vaicājums aprēķina kumulatīvo pārdošanas summu laika gaitā.

4. ROWS/RANGE

ROWS un RANGE klauzulas definē loga ietvaru, kas ir rindu kopa attiecībā pret pašreizējo rindu, ko izmanto aprēķinam. ROWS klauzula norāda loga ietvaru, pamatojoties uz fizisko rindas numuru, savukārt RANGE klauzula norāda loga ietvaru, pamatojoties uz ORDER BY kolonnas vērtībām.

ROWS piemērs:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
FROM
  sales_data;

Šis vaicājums aprēķina pārdošanas apjomu slīdošo vidējo pēdējo 3 dienu laikā (ieskaitot pašreizējo dienu).

RANGE piemērs:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date RANGE BETWEEN INTERVAL '2' DAY PRECEDING AND CURRENT ROW)
FROM
  sales_data;

Šis vaicājums aprēķina pārdošanas apjomu slīdošo vidējo pēdējo 2 dienu laikā (ieskaitot pašreizējo dienu). Ņemiet vērā, ka `RANGE` prasa sakārtotu kolonnu, kurai ir skaitlisks vai datuma/laika datu tips.

Biežākās loga funkcijas laikrindu analīzei

1. Slīdošais/mainīgais vidējais

Slīdošais vidējais, zināms arī kā mainīgais vidējais, ir plaši izmantota tehnika, lai izlīdzinātu īstermiņa svārstības laikrindu datos un izceltu ilgtermiņa tendences. To aprēķina, vidējojot vērtības noteiktā laika logā.

SQL piemērs:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_7_days
FROM
  sales_data;

Šis vaicājums aprēķina pārdošanas apjomu 7 dienu slīdošo vidējo.

Python piemērs (izmantojot Pandas):

import pandas as pd

# Assuming you have a Pandas DataFrame called 'sales_df' with 'date' and 'sales' columns

sales_df['moving_average_7_days'] = sales_df['sales'].rolling(window=7).mean()

Globāla pielietojuma piemērs: Starptautisks mazumtirgotājs varētu izmantot 30 dienu slīdošo vidējo, lai izlīdzinātu ikdienas pārdošanas svārstības un identificētu pamatā esošās pārdošanas tendences dažādos reģionos.

2. Kumulatīvā summa

Kumulatīvā summa, zināma arī kā pieaugošā kopsumma, aprēķina vērtību summu līdz pašreizējai rindai. Tā ir noderīga, lai izsekotu kopējo uzkrāto vērtību laika gaitā.

SQL piemērs:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date) AS cumulative_sales
FROM
  sales_data;

Šis vaicājums aprēķina kumulatīvo pārdošanas summu laika gaitā.

Python piemērs (izmantojot Pandas):

import pandas as pd

# Assuming you have a Pandas DataFrame called 'sales_df' with 'date' and 'sales' columns

sales_df['cumulative_sales'] = sales_df['sales'].cumsum()

Globāla pielietojuma piemērs: Starptautiska e-komercijas kompānija var izmantot kumulatīvos pārdošanas apjomus, lai izsekotu kopējiem ieņēmumiem no jauna produkta laišanas tirgū dažādās valstīs.

3. Lead un Lag

LEAD un LAG funkcijas ļauj piekļūt datiem attiecīgi no nākamajām vai iepriekšējām rindām. Tās ir noderīgas, lai aprēķinātu perioda pret periodu izmaiņas, identificētu tendences un salīdzinātu vērtības dažādos laika periodos.

SQL piemērs:

SELECT
  date,
  sales,
  LAG(sales, 1, 0) OVER (ORDER BY date) AS previous_day_sales,
  sales - LAG(sales, 1, 0) OVER (ORDER BY date) AS sales_difference
FROM
  sales_data;

Šis vaicājums aprēķina pārdošanas apjomu atšķirību salīdzinājumā ar iepriekšējo dienu. Funkcija `LAG(sales, 1, 0)` iegūst pārdošanas vērtību no iepriekšējās rindas (nobīde 1), un, ja iepriekšējās rindas nav (piemēram, pirmajā rindā), tā atgriež 0 (noklusējuma vērtība).

Python piemērs (izmantojot Pandas):

import pandas as pd

# Assuming you have a Pandas DataFrame called 'sales_df' with 'date' and 'sales' columns

sales_df['previous_day_sales'] = sales_df['sales'].shift(1)
sales_df['sales_difference'] = sales_df['sales'] - sales_df['previous_day_sales'].fillna(0)

Globāla pielietojuma piemērs: Globāla aviosabiedrība var izmantot "lead" un "lag" funkcijas, lai salīdzinātu biļešu pārdošanas apjomus vienam un tam pašam maršrutam dažādās nedēļās un identificētu potenciālās pieprasījuma svārstības.

4. Rank un Dense Rank

RANK() un DENSE_RANK() funkcijas piešķir rangu katrai rindai partīcijā, pamatojoties uz norādīto secību. RANK() piešķir rangus ar pārtraukumiem (piem., 1, 2, 2, 4), savukārt DENSE_RANK() piešķir rangus bez pārtraukumiem (piem., 1, 2, 2, 3).

SQL piemērs:

SELECT
  date,
  sales,
  RANK() OVER (ORDER BY sales DESC) AS sales_rank,
  DENSE_RANK() OVER (ORDER BY sales DESC) AS sales_dense_rank
FROM
  sales_data;

Šis vaicājums sarindo pārdošanas vērtības dilstošā secībā.

Globāla pielietojuma piemērs: Globāls tiešsaistes tirgus laukums var izmantot ranga funkcijas, lai identificētu vislabāk pārdotos produktus katrā valstī vai reģionā.

Progresīvas metodes un pielietojumi

1. Loga funkciju apvienošana

Loga funkcijas var apvienot, lai veiktu sarežģītākus aprēķinus. Piemēram, jūs varat aprēķināt kumulatīvās summas slīdošo vidējo.

SQL piemērs:

SELECT
  date,
  sales,
  AVG(cumulative_sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_cumulative_sales
FROM
  (
    SELECT
      date,
      sales,
      SUM(sales) OVER (ORDER BY date) AS cumulative_sales
    FROM
      sales_data
  ) AS subquery;

2. Loga funkciju izmantošana ar nosacītu agregāciju

Jūs varat izmantot loga funkcijas kopā ar nosacītu agregāciju (piemēram, izmantojot CASE priekšrakstus), lai veiktu aprēķinus, pamatojoties uz konkrētiem nosacījumiem.

SQL piemērs:

SELECT
  date,
  sales,
  AVG(CASE WHEN sales > 100 THEN sales ELSE NULL END) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_high_sales
FROM
  sales_data;

Šis vaicājums aprēķina pārdošanas slīdošo vidējo tikai tām dienām, kad pārdošanas apjomi ir lielāki par 100.

3. Laikrindu dekompozīcija

Loga funkcijas var izmantot, lai sadalītu laikrindu tās tendences, sezonālajās un atlikuma komponentēs. Tas ietver slīdošo vidējo aprēķināšanu, lai novērtētu tendenci, identificētu sezonālos modeļus un pēc tam atņemtu tendences un sezonālās komponentes, lai iegūtu atlikumus.

4. Anomāliju atklāšana

Loga funkcijas var izmantot, lai atklātu anomālijas laikrindu datos, aprēķinot slīdošos vidējos un standarta novirzes. Datu punkti, kas atrodas ārpus noteikta diapazona (piemēram, +/- 3 standarta novirzes no slīdošā vidējā), var tikt atzīmēti kā anomālijas.

Praktiski piemēri dažādās nozarēs

1. Finanses

2. Mazumtirdzniecība

3. Ražošana

4. Veselības aprūpe

Pareizā rīka izvēle

Loga funkcijas ir pieejamas dažādos datu apstrādes rīkos un programmēšanas valodās, tostarp:

Rīka izvēle ir atkarīga no jūsu konkrētajām vajadzībām un tehniskajām zināšanām. SQL ir labi piemērots datiem, kas glabājas relāciju datu bāzēs, savukārt Python un Spark ir elastīgāki lielu datu kopu apstrādei un sarežģītas analīzes veikšanai.

Labākās prakses

Noslēgums

Loga funkcijas ir jaudīgs rīks laikrindu analīzei, kas ļauj aprēķināt slīdošos vidējos, kumulatīvās summas, nākamās/iepriekšējās vērtības un citus uz laiku balstītus rādītājus. Apgūstot loga funkcijas, jūs varat atklāt vērtīgus ieskatus no saviem laikrindu datiem un pieņemt pārdomātākus lēmumus. Neatkarīgi no tā, vai analizējat finanšu datus, pārdošanas datus, sensoru datus vai tīmekļa datplūsmas datus, loga funkcijas var palīdzēt jums identificēt modeļus, tendences un anomālijas, kuras būtu grūti atklāt, izmantojot tradicionālās agregācijas metodes. Izprotot galvenos jēdzienus un loga funkciju sintaksi un ievērojot labākās prakses, jūs varat tās efektīvi izmantot, lai risinātu plašu reālās pasaules problēmu klāstu dažādās nozarēs.